package main

import (
	"fmt"
	"regexp"
)

func main() {
	// 使用正则表达式包下的方法，需要先进行编译为正则对象

	// 将正则字符串编译为正则表达式对象
	reg := regexp.MustCompile(`\d{3}`)
	// fmt.Println(reg)
	str := "123abc456def789"
	// 1.是否存在匹配的字符串
	fmt.Println(reg.MatchString(str))   // 接收一个字符串类型参数
	fmt.Println(reg.Match([]byte(str))) // 接收一个字节切片类型参数

	// var a byte = 'x'
	// fmt.Println(a)
	// var arr []byte = []byte{'a', 'b', 'c'}
	// fmt.Println(arr)
	// 字符串转为字节切片
	a := "123abc456"
	fmt.Println([]byte(a))

	// 2.查找第一次出现的子串
	// fmt.Println(reg.FindString(str))
	// 3.查找所有出现的子串, -1代表所有
	// fmt.Println(reg.FindAllString(str, -1))
	// 4.查找并替换
	// fmt.Println(reg.ReplaceAllString(str, "***"))
	// words := "How   are   you?I   am fine.Thank you"
	// // 分割出一句英文中的每个英文单词
	// // 按照空格、?、.分割   "\s+|\?|\."
	// reg := regexp.MustCompile(`\s+|\?|\.`)
	// // 5.分割字符串
	// fmt.Println(reg.Split(words, -1))

	// 练习：要求用户输入一个手机号码，使用正则表达式验证格式是否正确
	// 如果正确打印"格式正确"，否则"格式错误"
	// fmt.Print("请输入手机号码：")
	// var phone string
	// fmt.Scanln(&phone)
	// // fmt.Println(phone)
	// // 将手机号码的正则表达式进行编译
	// reg_obj := regexp.MustCompile(`^1[3-9]\d{9}$`)
	// if reg_obj.MatchString(phone) {
	// 	fmt.Println("手机号码格式正确")
	// } else {
	// 	fmt.Println("手机号码格式错误")
	// }
}
